import { createStore } from 'redux';


import { reducerFun } from './reducers'

// reducer: 更改state的唯一方式，并且reducer是一个纯函数（不涉及异步），reducer必须要有返回值
/**
 * state: 仓库的默认值
 * action：dispatch 触发reducer是传的参数，并且action是一个对象，对象中必须要有一个属性为type
 */


const reducer = (state, action) => {
    const { type } = action;

    // 如果默认 type 没有值。表示默认触发 就直接返回state 否则 就调用reducer中的方法
    return reducerFun[type] ? reducerFun[type](state, action) : state

}

// 仓库的全局参数， 在全局的 任何一个组件中都可被访问
const initState = {
    // 保存用户信息
    userInfo: {},
    title: '1907A'
}

const store = createStore(reducer, initState);

// 在控制台中验证
window.St = store;

export default store